查看原文
其他

秋招“笔试经”第三弹:华为硬件逻辑岗

相量子 达尔闻说 2021-01-17

我是相量子,受达尔闻邀请助力秋招,为大家解析笔试题目。今天让我们来看一下上次文末留下题目的解析(点击查看),并在本文的文末再送上两道题目。题目不难,但是相关知识的考点拓展和实际的妙用技巧,你是否也知道呢?

备注:目前笔试经固定在每周二更新,最近阶段我会集中为大家解析华为的各种题目,如果大家有其他需求,可以进入秋招求职群,添加妮姐微信:459888529,注明:秋招

接上一次华为题的2道,接下来是第3、4道:

3、只读存储器ROM中的内容,当电源断掉后又接通,存储器中的内容 (  )。(华为硬件逻辑实习岗)

A 全部为0            B 不可预料           

C 保持不变           D 全部改变

解析:考察数字电路中存储器的基本知识

下图所示为常见存储器件的性质关系:

1)易失性存储器的代表就是RAM,RAM又分为DRAM(动态随机存储器)和SRAM(静态随机存储器),它们之间主要在于生产工艺不同。

SRAM保存数据是通过晶体管进行锁存的,其工艺复杂,生产成本高,所以价格相对较贵,不易做大容量,但是速度更快;DRAM保存数据靠电容充电来维持容量,生产成本较SRAM低,所以价格相对便宜,容量可以做到很大,速度虽然不如SRAM快但是随着工艺技术的提升,速度也很可观,所以较为常用。DRAM和SRAM都是异步通信的,速率没有SDRAM(同步动态随机存储器)和SSRAM(同步静态随机存储器)快。所以现在大容量RAM存储器是选用SDRAM的。

CPU中的Cache实质属于SRAM,而内存条则是属于DRAM。SDRAM和DDR SDRAM的区别在于DDR(Double Data Rate)是双倍速率。SDRAM只在时钟的上升沿表示一个数据,而DDR SDRAM能在上升沿和下降沿都表示一个数据。DDR也一步步经过改良出现了一代、二代、三代、四代,以及低功耗版本,现在也有五代。

2)非易失性存储器常见的有ROM,FLASH,光盘,软盘,硬盘。他们作用相同,只是实现工艺不一样。

ROM(Read Only Memory)在以前就是只读存储器,就是说这种存储器只能读取它里面的数据无法向里面写数据。实际是以前向存储器写数据不容易,所以这种存储器就是厂家造好了写入数据,后面不能再次修改。现在技术成熟了,ROM也可以写数据,但是名字保留了下来。ROM分为MASK ROM、OTPROM、EPROM、EEPROM。MASK ROM是掩膜ROM这种ROM是一旦厂家生产出来,使用者无法再更改里面的数据。OTPROM(One TimeProgramable ROM)一次可变成存储器,出厂后用户只能写一次数据,然后再也不能修改了,一般做存储密钥。EPROM(Easerable Programable ROM)这种存储器就可以多次擦除然后多次写入了。但是要在特定环境紫外线下擦除,所以这种存储器也不方便写入。EEPROM(Eelectrically Easerable Programable ROM)电可擦除ROM,现在使用的比较多因为只要有电就可擦除数据,就可以写入数据。

FLASH是一种可以写入和读取的存储器,叫闪存,FLASH也叫FLASH ROM,有人把FLASH当做ROM。FLASH和EEPROM相比,FLASH的存储容量大。FLASH的速度比现在的机械硬盘速度快,现在的U盘和SSD固态硬盘都是Nandflash。FLASH又分为Norflash和Nandflash。

综上所述,本题答案选C 保持不变。

4、在Verilog语言中,a = 4’b1011,那么&a为( )。(华为硬件逻辑实习岗)

A 4’b1111             B 1’b1           

C 1’b0                   D 4’b1011

解析:考察Verilog基本语法中的操作符

“&”操作符有两种用途,既可以作为一元操作符(仅有一个操作数),也可以作为二元操作符(有两个操作数)。

当“&”作为一元操作符时表示归约与。&m是将m中所有比特相与,最后的结果为1bit。例:&4‘b1111 = 1&1&1&1 = 1’b1,&4’b1101 = 1&1&0&1 = 1’b0。

当“&”作为二元操作符时表示按位与。m&n是将m的每个比特与n的相应比特相与,在运算的时候要保证m和n的比特数相等,最后的结果和m(n)的比特数相同。例:4’b1010&4’b0101 = 4’b0000,4’b1101&4’b1111= 4’b1101。

我们在写Verilog代码时常常当if的条件有多个同时满足时就执行使用“&&”逻辑与操作符。m &&n是判断m和n是否都为真,最后的结果只有1bit,如果都为真则输出1‘b1,如果不都为真则输出1’b0。要注意和“&”的功能区分。

此外“&”操作符作为归约与使用时还有妙用。下面是一个分频器,代码结构简单,逻辑也不复杂,就是当计数器计数到15时让输出out取反,相当于实现对sclk的32分频。

//--------------------------------------------------
01module  divider(
02 input  wire   sclk   ,
03 input  wire   rst_n  ,
04
05 outputreg    out
06);
07
08reg[3:0]  cnt;         
09
10//cnt
11always@(posedge   sclk ornegedge rst_n)
12 if(rst_n ==1'b0)
13     cnt <=4'b0;
14 else   if(cnt ==4'd15)
15     cnt <=4'b0;
16 else
17     cnt <= cnt +1'b1;
18
19//out     
20always@(posedge   sclk ornegedge rst_n)
21 if(rst_n ==1'b0)
22     out <=1'b0;
23 else   if(cnt ==4'd15)
24     out <=~out;
25
26endmodule 

//--------------------------------------------------

我们可以看到第14行和第23行都使用了一个判断语句,是判断计数器cnt是否达到15,如果达到是计数器清零,且输出out取反。我们比较器要将cnt的每一个比特都和4‘d15的每一位进行比较,也就是判断(cnt== 4’b1111),会浪费更多的资源。而我们今天想到了“&”的用法就可以实现妙用,我们将判断条件改为(&cnt == 1‘b1),当计数器计数到15时,即所有的比特都为变为了1,那么&cnt为1‘b1,而其余情况&cnt都为1’b0,这样比较的位数就只有1位了,节省了资源。希望大家以后遇到此类相关情况推荐使用“&cnt”的方法。

注:如果大家在使用QuartusII工具进行验证上面的结论,想看看是否真的会节约逻辑资源时,可能看不到想要的结果,这是因为当描述的系统不复杂时综合器能够比较好的对逻辑进行优化(证明被优化的结果可以通过RTL视图定位在Chip Planner中的位置得到验证),而当描述的系统较为复杂时就不能够保证综合器能够有比较好的优化效果,或许以后综合器可以变得更加智能,但是目前还是使用推荐的写法更稳妥。

综上所述,本题答案选C 1‘b0


作业:下一期我们将对下面的题目进行详细的扩展解析,大家可以提前做一下,敬请期待……

5、下面哪种不是组合逻辑电路功能描述方法(   )。(华为硬件逻辑实习岗)

A 真值表       B布尔方程           C状态机              D逻辑框图

6、时序电路的一般特征不包括(   )。(华为硬件逻辑实习岗)

A 系统的状态保持或者变化情形取决于系统的输入及其当前状态      

B 时序机的状态图和状态表是相同的设计信息的两种不同的表示形式

C 可以没有时钟

D 时序电路(机)的当前状态和输入信号决定了其下一状态及输出

END


目前,我们安排的是每周二更新笔试经系列,计划涵盖的公司包含:华为,京东,大疆,商汤,中兴,CVTE,AMD,海康威视,黑金,汇顶等。(会陆续补充)
关于更新时间:每周二,如果同学们诉求高,很希望看到更多的分享,我们可以加番。
达尔闻 秋招“笔试经”系列:

第一弹:华为硬件逻辑岗

第二弹:海康威视硬件岗

毕业设计开班啦!达尔闻秋季大事件

达尔闻携全球分销商-得捷电子(Digi-key)带来17讲毕设系列线上课程。

讲师:毕设导师,名校博士/硕士,资深工程师,知乎大神,B站Up主

课程内容:从选题、基础知识补足,毕设题目拆解教学到毕设案例分享。

时间:2019年9月-2019年12月

福利:丰富的毕设资料、项目方案,免费开发板等,立即占座:

方式一,毕业设计-得捷 交流qq群:657307701

方式二,识别下方二维码进微信交流,如群满可添加妮姐微信:459888529


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存